x86: discard type information when stealing pages
authorJan Beulich <jbeulich@suse.com>
Tue, 2 May 2017 12:46:58 +0000 (14:46 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 2 May 2017 12:46:58 +0000 (14:46 +0200)
commiteaf537342c909875c10f49b06e17493655410681
tree2bc269ba45cd56d01cd5bbebae9f204862d2871b
parent22c096c99d8c05833c3c19870e36efb2dd4e8013
x86: discard type information when stealing pages

While a page having just a single general reference left necessarily
has a zero type reference count too, its type may still be valid (and
in validated state; at present this is only possible and relevant for
PGT_seg_desc_page, as page tables have their type forcibly zapped when
their type reference count drops to zero, and
PGT_{writable,shared}_page pages don't require any validation). In
such a case when the page is being re-used with the same type again,
validation is being skipped. As validation criteria differ between
32- and 64-bit guests, pages to be transferred between guests need to
have their validation indicator zapped (and with it we zap all other
type information at once).

This is XSA-214.

Reported-by: Jann Horn <jannh@google.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/mm.c